/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.assembler.output.p41;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.client.om.IClientEntreprise;
import fr.generali.accueilclient.client.om.impl.ClientEntreprise;
import fr.generali.refservcommuns.rce.consultpersonnesimple.dossierpersonnesimple.DtoDossierP41;
import fr.generali.refservcommuns.clients.prima.DatedMonetaryQuantityRangeValue;
import fr.generali.refservcommuns.rce.servperscom.pty.personnes.DtoPersonneMorale;

/**
 * Transforme un {@link DtoDossierP41} en {@link IClientEntreprise}
 * 
 * @author selrhazala
 */
@Component("dtoDossierP41ToClientEntrepriseConverter")
public class DtoDossierP41ToClientEntrepriseConverter implements Converter<DtoDossierP41, IClientEntreprise> {

    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(DtoDossierP41ToClientEntrepriseConverter.class);

    /**
     * {@inheritDoc}
     */
    public IClientEntreprise convert(DtoDossierP41 input) {
        LOGGER.debug("assemble");
        IClientEntreprise client = new ClientEntreprise();
        DtoPersonneMorale personneMorale = input.getPersonneMorale();

        if (personneMorale.getEntreprise() != null) {
            client.setSiren(personneMorale.getEntreprise().getCodeSIREN());
            client.setCodeNic(personneMorale.getEntreprise().getCodeNIC());
        }
        client.setCodeApe(personneMorale.getCodeNAF());
        if (personneMorale.getDateCreation() != null) {
            client.setDateCreation(personneMorale.getDateCreation().toGregorianCalendar().getTime());
        }
        
        if (personneMorale.getResultatFinancier() != null && !personneMorale.getResultatFinancier().isEmpty()) {
            DatedMonetaryQuantityRangeValue chiffreAffaireBorne =
                            personneMorale.getResultatFinancier().get(0).getChiffreAffaireBorne();
            if (chiffreAffaireBorne != null) {
                client.setNiveauCA(chiffreAffaireBorne.getCodeIndicateurSaisie());
            }
        }
        
        if (personneMorale.getResultatFinancierAExport() != null 
                        && !personneMorale.getResultatFinancierAExport().isEmpty()) {
            DatedMonetaryQuantityRangeValue chiffreAffaireBorneAExport =
                            personneMorale.getResultatFinancierAExport().get(0).getChiffreAffaireAExportBorne();
            if (chiffreAffaireBorneAExport != null) {
                client.setPartCAExport(chiffreAffaireBorneAExport.getCodeIndicateurSaisie());
            }
        }

        if (personneMorale.getCompteEspaceClient() != null && personneMorale.getCompteEspaceClient().length() > 0) {
            client.setCompteEspaceClient(personneMorale.getCompteEspaceClient());
        }

        return client;
    }
}
